@瞌睡虫
2年前 提问
1个回答

数据库并发操作会带来哪四种情况

delay
2年前

数据库并发操作会带来以下四种情况:

  • 丢失数据:修改丢失数据修改是指两个事务T1和T2读入同一数据并进行修改,T2提交的结果破坏了T1提交的结果,导致T1的修改被T2覆盖掉了。

  • 读“脏”数据:读“脏”数据是指一个事务读了某个失败事务运行过程中的数据,即事务T1修改了某一数据,并将修改结果写回到磁盘,然后事务T2读取了同一数据(是T1修改后的结果),但T1后来由于某种原因撤销了它所做的操作,这样被T1修改过的数据又恢复为原来的值,那么,T2读到的值就与数据库中实际的数据值不一致了。这时就说T2读的数据为T1的“脏”数据,或不正确的数据。

  • 不可重复读(不一致的检索):不可重复读是指事务T1读取数据后,事务T2执行了更新操作,修改了T1读取的数据,T1操作完数据后,又重新读取了同样的数据,但这次读完后,当T1再对这些数据进行相同操作时,所得的结果与前一次不一样。

  • 产生“幽灵”数据:产生“幽灵”数据实际属于不可重复读的范畴。它是指当事务T1按一定条件从数据库中读取了某些数据记录后,事务T2删除了其中的部分记录,或者在其中添加了部分记录,那么,当T1再次按相同条件读取数据时,发现其中莫名其妙地少了(删除)或多了(揑入)一些记录。这样的数据对T1来说就是“幽灵”数据或称“幻影”数据。